package com.cn.delan.web.mvc.admin.service;


import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;

import org.json.simple.JSONObject;

import com.cn.delan.web.mvc.admin.bean.UserBean;

/**
 * <b>用户服务接口</b></br>
 * 抽象与用户有关的各种操作
 * @author BingGo
 * @version 1.0
 */
public interface IUserService<T>{
	/**
	 * 获取指定userid对应的User对象
	 * @param userid 
	 * @return
	 * @throws InvocationTargetException 
	 * @throws NoSuchMethodException 
	 * @throws IllegalArgumentException 
	 * @throws SecurityException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public T findByUserId(String userid) throws Exception;
	/**
	 * 获取指定id对应的User对象
	 * @param id 
	 * @return
	 * @throws InvocationTargetException 
	 * @throws NoSuchMethodException 
	 * @throws IllegalArgumentException 
	 * @throws SecurityException 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 */
	public T findById(String id) throws Exception;
	/**
	 * 添加用户
	 * @param user 用户对象
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean add(T user) throws Exception;
	/**
	 * 添加用户
	 * @param userid 帐户
	 * @param password 密码
	 * @param username 名称
	 * @param roleid 角色
	 * @param superman 管理（系统管理员）
	 * @param lock 锁定
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean add(String userid,String password,String username,String roleid,String superman,String lock) throws Exception;
	/**
	 * 删除用户
	 * @param user 用户对象
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean del(T user) throws Exception;
	/**
	 * 删除用户
	 * @param id 用户表主键
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean del(String id) throws Exception;
	/**
	 * 判断用户是否存在
	 * @param userId 用户id
	 * @return
	 */
	public boolean exists(String userId) throws Exception;
	/**
	 * 更新用户信息
	 * @param user 用户对象
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean update(T user) throws Exception;
	/**
	 * 更新用户信息
	 * @param id 用户表主键
	 * @param password 密码
	 * @param username 名称
	 * @param roleid 角色
	 * @param superman 管理（系统管理员）
	 * @param lock 锁定
	 * @return 操作是否成功,成功则返回true,否则返回false
	 * @throws Exception
	 */
	public boolean update(String id,String password,String username,String roleid,String superman,String lock) throws Exception;
	/**
	 * 查询用户信息
	 * @param where 筛选条件
	 * @param param 筛选条件的参数
	 * @param pageNo 页码
	 * @return 查询到的用户列表
	 * @throws Exception
	 */
	public ArrayList<T> query(String where,Object param[],int pageNo,int pageCount) throws Exception;
	/**
	 * 查询用户信息
	 * @param where 筛选条件
	 * @param param 筛选条件的参数
	 * @param pageNo 页码
	 * @return 查询到的用户列表的JSON格式，适用于easyUI(如：{"total":"100","rows":[{"id":"1","username":"1","password":"1"},{"id":"2","username":"2","password":"2"}]})
	 * @throws Exception
	 */
	public JSONObject queryToJson(String where,Object param[],int pageNo,int pageCount) throws Exception;

}
